package cn.heroes.weixin.services;

import java.util.List;

import cn.heroes.weixin.pojo.Message;

/**
 * 开发者需要实现的关于业务逻辑的接口
 * 
 * @author cq
 * 
 */
public interface IService {

	/**
	 * 接收到用户的事件消息
	 * 
	 * @param fromMsg
	 *            用户发送的消息
	 * @return 返回给用户的消息
	 */
	Message event(Message fromMsg);

	/**
	 * 接收到用户的文本消息
	 * 
	 * @param fromMsg
	 *            用户发送的消息
	 * @return 返回给用户的消息
	 */
	Message text(Message fromMsg);

	/**
	 * 接收到用户的图片消息
	 * 
	 * @param fromMsg
	 *            用户发送的消息
	 * @return 返回给用户的消息
	 */
	Message image(Message fromMsg);

	/**
	 * 接收到用户的链接消息
	 * 
	 * @param fromMsg
	 *            用户发送的消息
	 * @return 返回给用户的消息
	 */
	Message link(Message fromMsg);

	/**
	 * 接收到用户的地理位置消息
	 * 
	 * @param fromMsg
	 *            用户发送的消息
	 * @return 返回给用户的消息
	 */
	Message location(Message fromMsg);

	/**
	 * 接收到用户的视频消息
	 * 
	 * @param fromMsg
	 *            用户发送的消息
	 * @return 返回给用户的消息
	 */
	Message video(Message fromMsg);

	/**
	 * 接收到用户的语音消息
	 * 
	 * @param fromMsg
	 *            用户发送的消息
	 * @return 返回给用户的消息
	 */
	Message voice(Message fromMsg);

	/**
	 * 返回要构建的菜单信息，List由Menu或Button构成。
	 * 
	 * @return 由Menu或Button组成的List对象
	 * @see cn.heroes.weixin.pojo.Menu
	 * @see cn.heroes.weixin.pojo.Button
	 */
	List<Object> menu();

}
